#ifndef MQCLIENT_MQ_CONSUMER_HPP_
#define MQCLIENT_MQ_CONSUMER_HPP_
#include "../mqcomm/proto/mq_msg.pb.h"
#include <functional>
#include <memory>
#include <string>

namespace mqclient
{

using ConsumerCallback = std::function<void(const std::string,  // 消费者标识
                            const proto::message::BasicProperties*,     // 消息基本属性
                            const std::string)>;                // 消息正文

class Consumer;
using ConsumerPtr = std::shared_ptr<Consumer>;

// 消费者数据结构
class Consumer  
{
public:
    Consumer(const std::string& tag, const std::string& qname, 
             bool auto_ack, const ConsumerCallback& callback)
        : tag_(tag), qname_(qname), auto_ack_(auto_ack), callback_(std::move(callback)) {}

    std::string tag_;     // 消费者标识
    std::string qname_;   // 消费者订阅的队列名称
    bool auto_ack_;       // 自动确认标志
    ConsumerCallback callback_; 
};

}

#endif